package top.continew.wechat.common.util;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.DigestUtil;

/**
 * 加密工具类
 */
public class EncryptUtil {

    /**
     * MD5加密
     *
     * @param content 内容
     * @return 加密后的字符串
     */
    public static String md5(String content) {
        return DigestUtil.md5Hex(content);
    }

    /**
     * MD5加密（带盐值）
     *
     * @param content 内容
     * @param salt    盐值
     * @return 加密后的字符串
     */
    public static String md5WithSalt(String content, String salt) {
        return DigestUtil.md5Hex(content + salt);
    }

    /**
     * SHA-1加密
     *
     * @param content 内容
     * @return 加密后的字符串
     */
    public static String sha1(String content) {
        return DigestUtil.sha1Hex(content);
    }

    /**
     * SHA-256加密
     *
     * @param content 内容
     * @return 加密后的字符串
     */
    public static String sha256(String content) {
        return DigestUtil.sha256Hex(content);
    }

    /**
     * AES加密
     *
     * @param content 内容
     * @param key     密钥
     * @return 加密后的字符串
     */
    public static String aesEncrypt(String content, String key) {
        return SecureUtil.aes(key.getBytes()).encryptHex(content);
    }

    /**
     * AES解密
     *
     * @param content 加密内容
     * @param key     密钥
     * @return 解密后的字符串
     */
    public static String aesDecrypt(String content, String key) {
        return SecureUtil.aes(key.getBytes()).decryptStr(content);
    }

    /**
     * 生成随机盐值
     *
     * @param length 长度
     * @return 盐值
     */
    public static String generateSalt(int length) {
        return cn.hutool.core.util.RandomUtil.randomString(length);
    }
}
